/*   11/10/03 15:18       */

#include<stdio.h>
#define QSIZE 5

struct queue
{
 int item[QSIZE];
 int front,rear;
};

void enqueue(struct queue *pq,int n)
{
 if(pq->rear==QSIZE)
   {
    printf("\nqueue is full\n");
   }
 else
   {
    pq->item[pq->rear]=n;
    pq->rear++;
   }
}

void dequeue(struct queue *pq)
{
 int i=pq->front;
 if(pq->front==pq->rear)
   {
    printf("\nqueue is empty\n");
   }
 else                                 /*same as priority queue*/
   {
    for(i=pq->front;i<(pq->rear-1);i++)
       {
        pq->item[i]=pq->item[i+1];
       }
    pq->rear--;
   }
}

void display(struct queue *pq)
{
 int i=pq->front;
 if(pq->front==pq->rear)
   {
    printf("\nqueue is empty\n");
   }
 else
   {
    for(i=pq->front;i<pq->rear;i++)
       {
        printf("\n%d",pq->item[i]);
       }
   }
}

void main()
{
 struct queue q;
 int ch,n;
 q.front=0;
 q.rear=0;

 do
  {
   printf("\nenter choice:\n1.enqueue\n2.dequeue\n3.display\n4.exit\n");
   scanf("%d",&ch);
   switch(ch)
      {
       case 1: printf("\nenter integar to enqueue:");
               scanf("%d",&n);
               enqueue(&q,n);
               break;

       case 2: dequeue(&q);
               break;

       case 3: display(&q);
               break;
      }
  }
 while(ch!=4);
}
